Как правильно написал уважаемый мной (и не только мной) трейдер: самое сложное в торговой системе – это принятие решение о начале или окончании сделки на основании некой информации.
Основная проблема робота это тоже принятие решения, создаваемый алгоритм по сути описывает некий принцип принятия решения, который в дальнейшем не меняется (т.е. робот сам не может поменять в своем алгоритме «модель рассуждения»). Более того, на данный момент это одна из основных проблем искусственного интеллекта, которая не решена.
По этой причине при формализации своего алгоритма на мой взгляд не нужно стараться описывать законченный вариант, который в дальнейшем нужно будет только подкручивать. А нужно описывать некое обобщающее решение в ближайшей перспективе на основании текущей ситуации (статистических данных). Другими словами стараться спрогнозировать как может развиваться конкретный рынок с конкретного момента времени.
В качестве примера по аналогии можно привести игру в шахматы: обычная неавтоматизированная игра заключается в оценки текущего хода противника (рынка) и ответного своего хода (вход или выход или пропустить ход). В случае если мы хотим запустить успешного в будущем (и именно это же цель?) робота с конкретного хода, то необходимо в текущей ситуации постараться просчитать на несколько ходов вперед, формализовать как робот должен ходить за тебя, запустить робота и смотреть сбывается твой просчет нескольких ходов или нет.